package com.ask.waitAndNotify;

public class Consumer extends Thread {
    @Override
    public void run() {
        while (true) {
            synchronized (Desk.lock) {
                if (Desk.count == 0) { // 消费者已经吃不下看
                    break; // 消费者进程停止
                } else {
                    // 先判断桌子上是否有面条
                    if (Desk.foodFlag == 0) {
                        try { // 当前桌子上没有食物，进入等待状态，直到被唤醒
                            Desk.lock.wait();
                        } catch (InterruptedException e) {
                            throw new RuntimeException(e);
                        }
                    } else { // 桌子上有食物
                        // 吃掉一份食物
                        Desk.count--;
                        System.out.println("我还能吃" + Desk.count + "份食物！！！");
                        // 唤醒其他等待在Desk.lock上的线程（例如生产者线程）
                        Desk.lock.notifyAll();
                        // 表示桌子已空，等待下一个生产者生产新的食物
                        Desk.foodFlag = 0;
                    }
                }
            }
        }
    }
}
